# 声明伪目标
.PHONY: all clean distclean help

# 编译器设置
CXX = g++
CXXFLAGS = -std=c++11 -Wall -Wextra -g -DDEBUG -O2

# 目标可执行文件
TARGET1 = Test1
TARGET2 = Profor_test
TARGETS = $(TARGET1) $(TARGET2)

# 源文件
SRC1 = Test1.cpp
SRC2 = Profor_test.cpp

# 头文件
HEADER = MemoryPool.h

# 对象文件
OBJ1 = $(SRC1:.cpp=.o)
OBJ2 = $(SRC2:.cpp=.o)
OBJS = $(OBJ1) $(OBJ2)

# 默认目标：编译所有程序
all: $(TARGETS)

# 编译第一个程序
$(TARGET1): $(OBJ1)
	$(CXX) $(CXXFLAGS) -o $@ $^

# 编译第二个程序
$(TARGET2): $(OBJ2)
	$(CXX) $(CXXFLAGS) -o $@ $^

# 从.cpp文件编译.o文件的通用规则
%.o: %.cpp $(HEADER)
	$(CXX) $(CXXFLAGS) -c -o $@ $<

# 清理生成的文件
clean:
	rm -f $(TARGETS) $(OBJS)
# 更彻底的清理
distclean: clean
	rm -f *~ *.bak

# 显示帮助信息
help:
	@echo "可用目标:"
	@echo "  all       - 编译所有程序 (默认)"
	@echo "  clean     - 删除可执行文件和对象文件"
	@echo "  distclean - 彻底清理（包括备份文件）"
